<?php
class validatecode extends CI_Controller{
	
	function index(){

		/*   网站验证码程序
		 *   运行环境： PHP5.0.18 下调试通过
		*   需要 gd2 图形库支持（PHP.INI中 php_gd2.dll开启）
		*   文件名: showimg.php
		*   作者：  17php.com
		*   Date:   2007.03
		*   技术支持： www.17php.com
		*/
		
		//随机生成一个4位数的数字验证码
		$num="";
		
		for($i=0;$i<4;$i++){
			$num .= rand(0,9);
		}
		//4位验证码也可以用rand(1000,9999)直接生成
		
		//将生成的验证码写入session，备验证页面使用
		$newSession = array(
		         'validationCode' =>$num 		
		);
		$this->session->set_userdata($newSession);   //write generated number in session
		
		//Session_start();
		//$_SESSION["Checknum"] = $num;

		//创建图片，定义颜色值
		
		Header("Content-type: image/PNG");
		srand((double)microtime()*1000000);
		$im = imagecreate(60,20);
		$black = ImageColorAllocate($im, 0,0,0);
		$gray = ImageColorAllocate($im, 200,200,200);
		$white = ImageColorAllocate($im, 255,255,255);   //white background
		imagefill($im,0,0,$white);
		
		//随机绘制两条虚线，起干扰作用
		$style = array($black, $black, $black, $black, $black, $gray, $gray, $gray, $gray, $gray);
		imagesetstyle($im, $style);
		$y1=rand(0,20);
		$y2=rand(0,20);
		$y3=rand(0,20);
		$y4=rand(0,20);
		
		imageline($im, 0, $y1, 60, $y3, IMG_COLOR_STYLED);
		imageline($im, 0, $y2, 60, $y4, IMG_COLOR_STYLED);
		
		//在画布上随机生成大量黑点，起干扰作用;
		for($i=0;$i<80;$i++){
		imagesetpixel($im, rand(0,60), rand(0,20), $black);
		}
		//将四个数字随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成
		$strx=rand(3,8);
		for($i=0;$i<4;$i++){
		$strpos=rand(1,6);
			imagestring($im,5,$strx,$strpos, substr($num,$i,1), $black);
			$strx+=rand(8,12);
		}
		ImagePNG($im);
		ImageDestroy($im);		
	}

	
}